Skip to content

[cupertino_ui] Migrate picker_test.dart to SemanticsHandle#12008

Merged
auto-submit[bot] merged 2 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_picker_test_migration
Jun 29, 2026
Merged

[cupertino_ui] Migrate picker_test.dart to SemanticsHandle#12008
auto-submit[bot] merged 2 commits into
flutter:mainfrom
Renzo-Olivares:cupertino_ui_picker_test_migration

Conversation

@Renzo-Olivares

Copy link
Copy Markdown
Contributor

Part of flutter/flutter#182636 and flutter/flutter#188395

This PR:

  • Removed the cross-import of widgets/semantics_tester.dart. Replaced SemanticsTester with SemanticsHandle.
  • Removed @Skip annotation, all tests in this file has passed. semantics_tester.dart has existed in cupertino_ui, so we can directly import semantics_tester.dart;
  • Moved the file to test/ folder.

Pre-Review Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran [the auto-formatter].
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I [linked to at least one issue that this PR fixes] in the description above.
  • I followed [the version and CHANGELOG instructions], using [semantic versioning] and the [repository CHANGELOG style], or I have commented below to indicate which documented exception this PR falls under[^1].
  • I updated/added any relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or I have commented below to indicate which [test exemption] this PR falls under[^1].
  • All existing and new tests are passing.

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Jun 25, 2026
@github-actions github-actions Bot added triage-framework Should be looked at in framework triage p: cupertino_ui labels Jun 25, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes the skip annotation from picker_test.dart and refactors the semantics tests to use SemanticsHandle and tester.getSemantics instead of SemanticsTester. The review feedback suggests replacing the use of private class name strings (_CupertinoPickerSemantics) in widget predicates with a cleaner search for the public ListWheelScrollView widget.

Comment on lines +88 to +92
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried the suggestion but it does not work, tester.getSemantics(find.byType(ListWheelScrollView) does not return the node of _CupertinoPickerSemantics (ancestor).

Comment on lines +108 to +112
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +156 to +160
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +171 to +175
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

Comment on lines +186 to +190
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of finding the private _CupertinoPickerSemantics widget by matching its runtimeType.toString(), we can find the public ListWheelScrollView widget. Since ListWheelScrollView is a direct descendant of _CupertinoPickerSemantics, tester.getSemantics will automatically walk up the tree and return the semantics node of _CupertinoPickerSemantics (which is the nearest ancestor semantics boundary). This is cleaner, more robust, and avoids relying on private class name strings.

Suggested change
tester.getSemantics(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_CupertinoPickerSemantics',
),
),
tester.getSemantics(find.byType(ListWheelScrollView)),

@Piinks Piinks left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Piinks Piinks added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 29, 2026
@auto-submit auto-submit Bot merged commit 66d9941 into flutter:main Jun 29, 2026
88 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: cupertino_ui triage-framework Should be looked at in framework triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants